package com.wf.articleManagement.service.local;


import com.wf.apicommons.entity.articleManagement.ArticleDetails;
import com.wf.apicommons.utils.CommonResult;
import com.wf.apicommons.entity.MessageBoard.MqMessage;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;

/**
 * 博客Service
 */
public interface BlogRelatedService {

    /**
     * 发布文章
     * @param articleDetails
     * @return
     */
    CommonResult<String> createArticle(ArticleDetails articleDetails);

    /**
     * 上传文件到COS
     * @param file
     * @param remarks
     * @return
     */
    CommonResult<String> fileUploadCos(MultipartFile file, String remarks);


    /**
     * 查询文章列表
     * @param param
     * @return
     */
    CommonResult<Map<String, Object>>  queryArticleList(Map<String,Object> param);

    /**
     * 高亮搜索+分页+按照指定字段排序
     *
     * @param indexName 索引名称
     * @param field 需要匹配的字段
     * @param field2 需要匹配的字段
     * @param keyword 匹配的值
     * @param userId 需要匹配的用户ID值
     * @param pageNum 分页页码
     * @param pageSize 单页展示条数
     * @return 返回替换原本内容后的数据
     */
    Map<String,Object> highLightSearchBlog(String indexName, String field, String field2, String keyword, String userId, Integer pageNum, Integer pageSize);


    /**
     * 查询指定文章详情
     * @param articleId
     * @param isCompile
     * @return
     */
    CommonResult<Map<String,Object>> queryBlogDetails(String articleId, boolean isCompile);


    /**
     * 查询指定用户的文章列表
     * @param param
     * @return
     */
    CommonResult<Map<String, Object>>  querySpecifyUserArticleList(Map<String,Object> param);

    /**
     * 删除指定文章
     * @param articleId
     * @return
     */
    CommonResult<String> deleteArticle(String  articleId);

    /**
     * 修改指定文章
     * @param articleDetails
     * @return
     */
    CommonResult<String> updateArticle(ArticleDetails  articleDetails);

    /**
     * 刷新ES数据
     * @param flushData
     */
    void flushESData(MqMessage<ArticleDetails> flushData);
}
